#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
using namespace std;

void test0(){
    char str; // 只接收一个字符
    // char * str; // 野指针

    cin >> str;
    cout << str << endl;
}

void test1(){
    int num1 = 1;
    cin >> num1;
    cout << "num1 = " << num1 << endl;

    if (!cin.good()){
        // 将流状态恢复为goodbit状态
        cin.clear();
        
        // 清空缓冲区
        cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
        // 舍弃缓冲区的多少个字符，遇到什么字符就停止舍弃任务
    }

    int num2 = 2;
    cin >> num2;
    cout << "num2 = " << num2 << endl;
}

void test2(){
    ifstream ifs("01_stream.cc");
    if (!ifs){
        cerr << "ifstream open file failed" << endl;
    }

    // // 一个单词一个单词读
    // string word;
    // while(ifs >> word){
    //     cout << word << endl;
    // }

    // C语言写法
    char arr[100] = {0};
    while(ifs.getline(arr, sizeof(arr))){
        cout << "ifs.getline: " << arr << endl;
        memset(arr, 0, sizeof(arr));
    }

    ifs.clear();// 清理缓冲区
    ifs.seekg(0);// 文件游标置为0
    cout << ifs.tellg() << endl;

    // c++写法
    string line;
    while(getline(ifs, line)){
        cout << "getline: " << line << endl;
    }

    ifs.close();

}

int main(void){
    // test0();
    test2(); 
    return 0;
}

